/*
 * Descripción: En esta clase es donde se realizan los cálculos
 * de la media y la desviación estándar de los datos leídos
 * @autor: Karla Cristina Obando Narváez
 * Fecha: 05 de Marzo de 2012
 * Programa #1
 */
package pkgPrincipal;/** Esta clase pertenece a este paquete **/
import pkgListaLigada.ClsLista;
import pkgListaLigada.ClsNodo;
/**
 *
 * @author Karla O
 */
public class ClsPrincipal {    
    /**
     * 
     * @param lista:este parámetro es una lista ligada que contiene los datos
     * a los cuales se le van a calcular la media
     * @return dmediaCalculada: retorna la media de los datos leídos
     */
    public static double dCalcularMedia(ClsLista lista){
        double dmedia=0;
        double dmediaCalculada=0;
        ClsNodo nodo= lista.getPrimero();
        while(nodo!=null){
      dmedia += (Double) nodo.getDato();
            nodo= nodo.getLiga();
        }
        dmediaCalculada=dmedia/lista.longitud();
        return dmediaCalculada;
    }
    
    /**
   * 
   * @param lista este parámetro es una lista ligada que contiene los datos a
   *          los cuales se le van a calcular la desviación estándar
   * @return
   */
    public static double dCalcularDesviacion(ClsLista lista){
    // nlnmn,msad
    /*
     * asd
     * asd
     * asd
     * asd
     */
        double dmedia= dCalcularMedia(lista);
        double ddesvCalculada=0;
        double dsumaCalculada=0;
        ClsNodo nodo= lista.getPrimero();
    /*
     * 
     */
    while (nodo != null) {
            dsumaCalculada+=Math.pow((Double)nodo.getDato()-dmedia,2);
            nodo=nodo.getLiga();
        }
        double dlongitudLista=lista.longitud();
        ddesvCalculada=Math.sqrt((dsumaCalculada/(dlongitudLista-1)));        
        return ddesvCalculada;
    }
    
    
}
